6ffaaa8bec727a59318453b6b251a5987809107d,DataExtractionOSM/src/net/osmand/router/BinaryRoutePlanner.java,BinaryRoutePlanner,attachKeepLeftInfoAndLanes,#boolean#RouteSegmentResult#RouteSegmentResult#TurnType#,1072

Before Change


		int ls = prev.getObject().getLanes();
		int left = 0;
		int right = 0;
		boolean speak = highwayLowEnd(prev.getObject().getHighway()) || highwayLowEnd(rr.getObject().getHighway());
		if (attachedRoutes != null) {
			for (RouteSegmentResult rs : attachedRoutes) {
				double ex = MapUtils.degreesDiff(rs.getBearingBegin(), rr.getBearingBegin());

After Change


		int left = 0;
		int right = 0;
		boolean speak = false;
		int speakPriority = Math.max(highwaySpeakPriority(prev.getObject().getHighway()), highwaySpeakPriority(rr.getObject().getHighway()));
		if (attachedRoutes != null) {
			for (RouteSegmentResult rs : attachedRoutes) {
				double ex = MapUtils.degreesDiff(rs.getBearingBegin(), rr.getBearingBegin());
				double mpi = Math.abs(MapUtils.degreesDiff(prev.getBearingEnd(), rs.getBearingBegin()));
				int rsSpeakPriority = highwaySpeakPriority(rs.getObject().getHighway());
				if (rsSpeakPriority != MAX_SPEAK_PRIORITY || speakPriority == MAX_SPEAK_PRIORITY) {
					if ((ex < TURN_DEGREE_MIN || mpi < TURN_DEGREE_MIN) && ex >= 0) {
						kl = true;
						int lns = rs.getObject().getLanes();
						if (lns > 0) {
							right += lns;
						}
						speak = speak || rsSpeakPriority <= speakPriority;
					} else if ((ex > -TURN_DEGREE_MIN || mpi < TURN_DEGREE_MIN) && ex <= 0) {
						kr = true;
						int lns = rs.getObject().getLanes();
						if (lns > 0) {
							left += lns;
						}
						speak = speak || rsSpeakPriority <= speakPriority;
					}
				}
			}